# 3.35 WiFi Real-time Display ## 3.35.1 Overview In this project, we display the values of temperature and humidity sensor, pressure sensor, photoresistor, sound sensor, PIR motion sensor and ultrasonic sensor on the web page. ## 3.35.2 Test Code In Files, open **3-35-wifiWebpageDisplay.py** and click ![](media/run.jpg). **Code:** ```python ''' * Filename : 3-35-wifiWebpageDisplay * Thonny : Thonny 4.1.4 * Auther : http//www.keyestudio.com ''' import network import socket import time import json import machine from machine import Pin, ADC, I2C,SoftI2C,PWM import aht20 # WiFi connection information # SSID = 'your WiFi name' # your WiFi name # PASSWORD = 'your WiFi password' # your WiFi password SSID = 'ChinaNet_2.4G' # your WiFi name PASSWORD = 'ChinaNet@233' # your WiFi password # initialize sensor # photoresistor light_sensor = ADC(Pin(36)) light_sensor.atten(ADC.ATTN_11DB) # ultrasonic sensor # define the control pins of ultrasonic sensor Trig = Pin(5, Pin.OUT) Echo = Pin(4, Pin.IN) distance = 0 # set initial distance value to 0 soundVelocity = 340 #Set the speed of sound. # PIR sensor pir_sensor = Pin(19, Pin.IN) # AHT20 sensor i2c = SoftI2C(scl=Pin(22), sda=Pin(21)) aht20Sensor = aht20.AHT20(i2c) def getDistance(): # maintain Trig pin at high for 10us to enable ultrasonic sensor Trig.value(1) time.sleep_us(10) Trig.value(0) #Start timing, the initial time of ultrasonic propagation in the air while Echo.value() == 0: Start = time.ticks_us() #The time of receiving the reflected ultrasonic wave while Echo.value() == 1: Stop = time.ticks_us() #The received time minus the initial time is the total time Time = time.ticks_diff(Stop,Start) #Calculate the distance according to the formula gives the result in meters. #Divide by 1000 to convert to centimeters. distance = Time * soundVelocity //2 // 10000 #return the calculated result return distance # connect to WiFi def connect_wifi(ssid, password): wlan = network.WLAN(network.STA_IF) # Create WLAN objects using STA mode (client mode) wlan.active(True) # activate WLAN interface wlan.connect(ssid, password) # Connect to the specified WiFi network timeout = 10 # Connect timeout duration, in seconds while not wlan.isconnected() and timeout > 0: # If the connection fails and the timeout period does not expire, check the connection status again print("Connecting to WiFi...") time.sleep(1) timeout -= 1 if not wlan.isconnected(): # If the connection is not successful after timeout, an exception is thrown raise Exception("Could not connect to WiFi") print('Network config:', wlan.ifconfig()) # Output network configuration (IP address, subnet mask, gateway, and DNS) print('Connected to WiFi, IP address:', wlan.ifconfig()[0]) # output the IP address of the successful connection return wlan # create HTML page def web_page(): html = """ ESP32 Sensor Data

ESP32 Sensor Data

Light Sensor Value:
Distance: cm
PIR Sensor:
Temperature: C
Humidity: %
""" return html # Return the HTML page that contains the sensor data # Start the Web server def start_server(): wlan = connect_wifi(SSID, PASSWORD) # Connect to WiFi addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1] # Obtain the local IP address and port 80 s = socket.socket() # Create a socket object s.bind(addr) # Bind sockets to addresses and ports s.listen(5) # Start listening for incoming connections. The maximum number of connections is 5 print('Listening on', addr) # Print the address and port on which the server is listening while True: cl, addr = s.accept() # Accept a client connection print('Client connected from', addr) # Print the address of the client request = cl.recv(1024) # Receive client requests, up to 1024 bytes request = str(request) # Convert the request to a string print('Content = %s' % request) # Print request content if 'GET /sensor_data' in request: light_value = light_sensor.read() distance = getDistance() pir_value = pir_sensor.value() temperature, humidity = aht20Sensor.read_temperature_humidity() sensor_data = { 'light': light_value, 'distance': distance, 'pir': pir_value, 'temperature': temperature, 'humidity': humidity } response = 'HTTP/1.1 200 OK\nContent-Type: application/json\n\n' response += json.dumps(sensor_data) cl.send(response) else: response = web_page() cl.send('HTTP/1.1 200 OK\n') cl.send('Content-Type: text/html\n') cl.send('Connection: close\n\n') cl.sendall(response) cl.close() # Run server try: start_server() # Try starting the Web server except Exception as e: print('Failed to start server:', e) # If the startup fails, an error message is displayed machine.reset() # Restart the device to try to reconnect ``` **Result:** Upload the code, and the Shell shows the IP address after connecting to wifi. Connect your computer/mobile phone and ESP32 to the same wifi, and you can access the IP address to see the values through your device. If you are using a mobile phone hotspot, you can directly access the IP via the phone. ![](./media/7-35-1.png)